#
# Realise par Nicolas Berrez
#
from random import random
import logging

class Dico:


    '''
    charge dans un set tous les mots du dictionnaire
    en parallele, sauvegarde les mots par taille dans des liste
    '''
    def __init__ (self, dicoName):
        fichier = open(dicoName, "r") 
        #self.monset = {line.strip() for line in fichier}
        self.monset = []
        for line in fichier:
            self.monset.append(line.strip())
        self.tab = {}
        self.minLength =25
        self.maxLength = 0
        for mot in self.monset :
            l = len(mot)
            if l < self.minLength : 
                self.minLength = l
            if l > self.maxLength:
                self.maxLength = l
            #logging.info(mot)
            #logging.info(range(1,l))
            if not l in self.tab:
                self.tab[l] = list()
            self.tab[l].append(mot)

    '''
    cherche le mot dans le dictionnaire
    '''    
    def find(self,word):
        return word in self.monset
    
    '''
    renvoi un mot de taille inferieur a la tainne specifie
    '''
    def getRandom(self, maxLen):
        
        col = int(random()*(maxLen+1))
        
        
        if col < self.minLength:
            col = self.minLength
        if col > self.maxLength:
            col = self.maxLength
        nbMot = len(self.tab[col])
        
        return self.tab[col][int(random()*nbMot)]